/*
 * Copyright (c) 2018-2999 湖南洛云网络科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 */

package com.yami.shop.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yami.shop.bean.model.RetailProd;
import com.yami.shop.bean.param.RetailProdExportParam;
import com.yami.shop.bean.param.RetailProdParam;
import com.yami.shop.common.util.PageParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 *
 *
 * @author LGH
 * @date 2020-08-24 15:18:35
 */
public interface RetailProdMapper extends BaseMapper<RetailProd> {


    /**
     * 分页获取单品信息
     * @param page 分页参数
     * @param retailProd 条件查询参数
     * @return 分页单品信息数据
     */
    IPage<RetailProd> getPage(PageParam<RetailProd> page, @Param("retailProd") RetailProd retailProd);

    /**
     * 删除单品
     * @param ids 单品id
     * @param shopId 店铺id
     */
    void removeRetainProdByIds(@Param("ids") Long[] ids, @Param("shopId") Long shopId);

    /**
     * 统计条形码的单品数量
     * @param barCode 条形码
     * @return 数量
     */
    int countBarCode(@Param("barCode") String barCode);

    /**
     *  统计单品条码的单品数
     * @param barCode 单品条码
     * @param retailProdId 单品id
     * @return 数量
     */
    int countBarCodeAndId(@Param("barCode") String barCode, @Param("retailProdId") Long retailProdId);

    /**
     * 获取单品详情
     * @param retailProdId 单品id
     * @return 单品信息
     */
    RetailProd getInfo(@Param("retailProdId") Long retailProdId);

    /**
     * 获取sku下所有的单品信息
     * @param skuId skuId
     * @return 单品信息列表
     */
    List<RetailProdParam> getBySkuId(@Param("skuId") Long skuId);

    /**
     * 修改单品的库存
     * @param retailProd 单品库存
     * @return 影响行数
     */
    int updateStocks(@Param("retailProd") RetailProd retailProd);

    /**
     * 回退库存
     * @param retailProdId 单品id
     * @param num 数量
     * @return 影响行数
     */
    int returnStocks(@Param("retailProdId") Long retailProdId, @Param("num") Integer num);

    /**
     * 条件查询，获取单品信息列表
     * @param retailProd 条件查询参数
     * @return 单品信息列表
     */
    List<RetailProdExportParam> selectByParam(@Param("retailProd") RetailProd retailProd);

    /**
     * 修改单品信息
     * @param retailProd 单品信息
     */
    void updateInfoById(@Param("retailProd") RetailProd retailProd);

}
